package com.skyeye;

import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import static org.junit.Assert.*;

/**
 * MySQL连接测试类
 * 这是一个最简单的MySQL连接测试用例
 */
public class MySQLConnectionTest {

    // 数据库连接配置
    private static final String URL = "jdbc:mysql://localhost:3308/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "123456";

    /**
     * 测试MySQL数据库连接
     * 这是最简单的连接测试，只验证能否成功连接到数据库
     */
    @Test
    public void testMySQLConnection() {
        Connection connection = null;
        
        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            
            // 建立数据库连接
            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            
            // 验证连接是否成功
            assertNotNull("数据库连接不应该为null", connection);
            assertFalse("数据库连接应该是有效的", connection.isClosed());
            
            System.out.println("✅ MySQL数据库连接测试成功！");
            System.out.println("连接URL: " + URL);
            System.out.println("用户名: " + USERNAME);
            
        } catch (ClassNotFoundException e) {
            fail("MySQL驱动未找到: " + e.getMessage());
        } catch (SQLException e) {
            fail("数据库连接失败: " + e.getMessage());
        } finally {
            // 关闭数据库连接
            if (connection != null) {
                try {
                    connection.close();
                    System.out.println("数据库连接已关闭");
                } catch (SQLException e) {
                    System.err.println("关闭数据库连接时出错: " + e.getMessage());
                }
            }
        }
    }

    /**
     * 测试数据库连接配置
     * 验证连接参数是否正确
     */
    @Test
    public void testConnectionConfig() {
        // 验证URL格式
        assertTrue("数据库URL应该包含jdbc:mysql", URL.startsWith("jdbc:mysql://"));
        
        // 验证用户名不为空
        assertNotNull("用户名不应该为null", USERNAME);
        assertFalse("用户名不应该为空", USERNAME.trim().isEmpty());
        
        // 验证密码不为空
        assertNotNull("密码不应该为null", PASSWORD);
        assertFalse("密码不应该为空", PASSWORD.trim().isEmpty());
        
        System.out.println("✅ 数据库连接配置验证通过！");
    }
}
